約 4,323,659 件
https://w.atwiki.jp/mizcremorne/pages/315.html
エラーが出る原因と対処方法についてまとめてみました。 LSLに関わって発生するエラーには主に3種類あります。 コンパイルエラー(Compiler Errors) ランタイムエラー(Run-Time Errors) ビルドエラー(Build Errors) 以下にエラーの種類と原因、対処方法について書いていますので参考にしてみて下さい。 コンパイルエラーSyntax Error Type mismatch Function call mismatches type or number of arguments Name not defined within scope Name previously declared within scope Use of vector or quaternion method on incorrect type Lists can't be included in lists Return statement type doesn't match function return type Function returns a value but return statement doesn't Not all code paths return a value Dead code found beyond return statement Global functions can't change state Byte code assembly failed -- out of memory ランタイムエラーMath Error Stack Heap Collision Too many listens Heap Error X error running rule #Y non-Z rule X error running rule #Y unknown rule ビルドエラーThe object may be out of range or may have been deleted. Can't enable physics for objects that interpenetrate others Pieces too far apart コンパイルエラー スクリプトコードを保存したときに発生するエラーです。 コードの記述間違いや抜けによって起きます。 エラー個所を修正して保存し直さないとスクリプトを動作させることはできません。 修正する際にはエラーメッセージとともに表示される行・列番号が参考になります。 (3,8):ERROR Syntax Error このような表示は、3行目の8文字目辺りに間違いがあることを意味します。 ただしあくまでも参考情報ですので、その位置ではない個所に間違いが潜んでいる場合もあります(特にSyntaxErrorの場合)。 なお、ここに表示される行数・文字数は0行目0文字目から数えることに注意して下さい(先頭行は1行目ではなく0行目です)。 コンパイルエラーには以下のような種類があります。 Syntax Error シンタックスエラー、文法エラーとも言います。 普段遭遇するエラーの8割はこれです。 エラーの代名詞みたいな存在です。 コンパイルという作業は、コンピュータがコードの意味を解釈してマシンコードに変換していく作業ですが、このエラーはコンピュータがコードの意味を理解できなかったことを意味します。 例えば日本語で言うなら、以下のようなものはシンタックスエラーです。 「昨日怪獣を悲しくてまたの名をニュージーランド旅行が久しからず」 意味不明で解釈できないので、これは日本語としてエラーになります。 LSLにも文法がありますので、文法を間違うとシンタックスエラーが出ます。 例えばありがちなのは、「文末には;を付ける」という文法をうっかり忘れた場合です。 default { state_entry(){ llSay(0,"Yes.") ←文末に;が無い } } 他には、{}や()の対応付けを間違うというパターンもあります。 if文などによる条件分岐が深くなると、うっかり閉じカッコを忘れたりします。 default { touch_start(integer detected){ if (llDetectedKey(0) == llOwner()){ if (llVecDist(llDetectedPos(0), llGetPos()) 4.0){ if (llDetectedName(0) == "Miz Cremorne"){ llSay(0,"Hi, Miz!"); } } ← ここでもう一つ}が必要 } } このパターンのシンタックスエラーはエラー個所を示す行番号がズレるので気付きにくいエラーです。 Type mismatch タイプミスマッチ、型不正とも言います。 変数には型がありますが、異なる型同士で演算を行おうとした場合などに起こります。 日本語を例にとると、例えば、 「彼は小さいときには皮を被っていたが、大きくなったら皮がむけてとっても堅くなった」 と言うと、なんだか誤解を与えます。 これは実は「タケノコ」についての記述であり、「彼」という型を使うのは間違いなのです。 「彼」のかわりに「それ」を使ってもあんまり変わらないという突っ込みはご容赦下さい。 LSLでタイプミスマッチが起こるのは以下のような場合です。 default { state_entry(){ integer i; i = "Takenoko"; } } 変数iはinteger型(整数型)なのに、文字列の"Takenoko"を代入しようとしているのでエラーとなります。 Function call mismatches type or number of arguments 引数不正によるエラーです。 直訳すると「不正な型、または不正な数の引数を使って関数が呼ばれています」という感じでしょうか。 下手な喩えをまた使いますが、電子レンジというものは中に入れるのは通常「食べ物」と決まっています(例外もありますがw)。 にも関わらず、雨に濡れた猫を乾かそうとして電子レンジに入れたりすると、妙な都市伝説が生まれる結果になります。 同じように、関数はそれぞれ、指定すべき引数の型と数、順序が決まっています。 決まっている引数以外のものを指定したり、間違った順序で書いたりすると、このエラーが発生します。 どのような引数を使うべきかは関数によって様々ですので、リファレンスを参照して調べて下さい。 例えばllSayという関数は、 llSay(integer channel, string msg) 整数と文字列の二つの引数を指定すると決まっています。 これを間違えて以下のように書くとエラーです。 default { state_entry(){ llSay("cat", 0); } } Name not defined within scope 未定義エラーです。 定義されていない変数やユーザー関数を使ったときに発生します。 要するに「そんな言葉は知らないよ!」というエラーです。 日本語で言うなら、 「昨日さぁ、パップラドンカルメ食べたんだ~」 という感じですかね。 相手が人間なら「パップラドンカルメって何?」と聞けますが、コンピュータはシャイなので「それ何?」の一言が言えません。 変数やユーザー関数を使うときには、必ず前もって「定義」して、コンピュータがわかるようにしてあげなければいけません。 自分では定義したつもりでも、うっかりミスで未定義の変数を書いてしまうこともあります。 エラーの原因としてはこちらのほうが多いのではないでしょうか。 default { state_entry(){ string pappuradon = "karume"; llSay(0, papuradon); ← うっかりpが抜けた } } 落ち着いてよく見ればすぐわかるミスだと思いますので、このエラーが出たときはよくコードを見直してみましょう。 また、変数には「スコープ」という概念があります。 ごく簡単に言ってしまうと、ある変数が有効なのはその変数が定義された{}の中だけです。 定義された{}の外でその変数を使おうとすると、やはりこのエラーが出ます。 default { state_entry(){ string pappuradon = "karume"; } ← 変数pappuradonが有効なのはここまで touch_start(integer detected){ llSay(0, pappuradon); ←ここは変数のスコープ外 } } Name previously declared within scope 二重定義エラーです。 同じ名前の変数を同じスコープ内で定義しようとした場合などに起こります。 クラスに「山田太郎君」が2人いるような状況です。 コンピュータは人の顔を覚えるのが苦手ですので、同姓同名だと区別が出来ません。 default { state_entry(){ string yamada = "taro"; ← 一人目の山田君 llSay(0, yamada); string yamada = "taro"; ← 二人目の山田君。この時点でエラー llSay(0, yamada); } } 仕方がないので二人目の山田君には今日から山下君に改名してもらえば解決です。 default { state_entry(){ string yamada = "taro"; ← 一人目の山田君 llSay(0, yamada); string yamashita = "taro"; ← 違う名前になったのでOK llSay(0, yamashita); } } Use of vector or quaternion method on incorrect type あまり遭遇することのないエラーですが一応紹介しておきます。 ベクター型とローテーション型の変数は、内部の要素にアクセスするためのメソッド「.」を使うことができます。 vector p = 1.0, 2.0, 3.0 ; llSay(0, (string)p.x); ← p.xはpの最初の要素。1.0が入っている この特殊なメソッド「.」をベクター/ローテーション型以外で使うとこのエラーが出ます。 default { state_entry(){ integer p; llSay(0, (string)p.x); ← pはintegerなのでエラー } } Lists can t be included in lists リストにリストを入れようとしたときに起こるエラーです。 リスト型変数には、整数、小数、文字列などなど、あらゆる型のデータを入れることができますが、リスト型データを入れることはできません。 default { state_entry(){ list a = [1,2,3]; list b = [4,5,6,a]; ← aはリスト型なので入れられない } } 二つのリストを連結したいときには、以下のように書き直しましょう。 default { state_entry(){ list a = [1,2,3]; list b = [4,5,6] + a; ← aを連結するのでbは[4,5,6,1,2,3]になる } } Return statement type doesn t match function return type ユーザー関数にまつわるエラーです。 戻り値の型が、定義された型と違う場合に発生します。 ユーザー関数と戻り値については関数の説明の後半を参考にして下さい。 以下のようなコードがエラーの例です。 integer func(){ return "hoge"; } ユーザー関数funcにはinteger型の戻り値を定義しているのに、実際にreturnで返しているのは文字列です。 戻り値の型定義と実際の型が異なるので、このエラーが発生します。 Function returns a value but return statement doesn t これもユーザー関数にまつわるエラーです。 ユーザー関数に戻り値が定義されているのに、どこにもreturn文が無い場合に発生します。 integer func(){ llSay(0, "It s OK."); ← 全然OKじゃない } integer型を返す、と定義しているのですから、正しくreturn文でinteger型のデータを返すようにしなければいけません。 integer func(){ llSay(0, "It s OK."); return TRUE; } これならOKです。 Not all code paths return a value これもユーザー関数にまつわるエラーです。 ユーザー関数内で条件分岐などを多用すると陥りやすいエラーです。 直訳すると「全てのコードが戻り値を返すようになってない」ということになります。 例えば、 integer func(string mode){ if (mode == "A"){ llSay(0, "mode A"); return 0; ← modeが"A"のときしか戻り値を返さない }else if (mode == "B"){ llSay(0, "mode B"); } } modeが"B"のときにはretuen文が実行されないので、戻り値が返されません。 ユーザー関数funcはinteger型の戻り値を返すように定義されていますので、必ずreturn文でinteger型のデータを返すようにしなければいけません。 Dead code found beyond return statement 永久に日の目を見ない哀れなコードがあるときに発生します。 以下のような場合です。 integer func(){ return 0; ← ここでリターンされる llSay(0, "Help!"); ← ここは絶対に実行されない } return以下のコードが不要ならば消去して成仏させましょう。 必要ならばreturnの前に移動し、活躍の舞台を作ってあげて下さい。 Global functions can t change state ユーザー関数で発生するエラーの一つです。 LSLの仕様で、ユーザー関数内でのステートチェンジは使用不可になっています。 ChangeState(){ state active; ← ユーザー関数内でステートチェンジはNG } 逃げ道として、以下のように修正する方法があります。 ChangeState(){ if (TRUE){ state active; ← if文に入れると何故かOK } } しかしながらこの逃げ道自体がLSLコンパイラーのバグである可能性もあり、オススメは出来ません。 Byte code assembly failed -- out of memory サイズオーバーのときに出るエラーです。 LSLは1スクリプトで16KByteまでという制限があり、それを越えるような超大作を書いてしまったときにこのエラーになります。 コードを分割し、llMessageLinkedなどを使って通信するように改造して下さい。 ランタイムエラー コンパイル(コードの保存)は問題なくできたけれども、動かしている最中に発生するエラーのことをランタイムエラーと言います。 ランタイムエラーが起きると、スクリプトの入っているオブジェクトにエラーアイコン(書類のようなマーク)が表示され、デバッグチャンネルにエラーメッセージが表示されます。 クライアント画面の上方、メニューの右あたりにもエラーアイコンが出るので、そこをクリックするとエラーメッセージの内容を確認できます。 エラーメッセージを手がかりにしてコードの修正を行うわけですが、時としてコードのどの位置でエラーになっているのかわからない場合があります。 LSLがどこまで正常に動き、どこでエラーとなるのかを見極めるには、デバッグメッセージを活用するのが常套手段です。 例えば、タッチしたときにランタイムエラーになるとしましょう。 タッチイベントの中には複数の処理が書いてあり、一体どこが問題なのかがさっぱりわからないとします。 default { touch_start(integer detected) { float a; float b; float c; for (a = 3.0;a = 0.0; a -= 1.0){ b = 10.0 / a; c = b * b; } } } このまま動かしても、タッチイベント内のどこでエラーになるのかわからないので、llOwnerSayを使ってデバッグメッセージを出すように改造します。 default { touch_start(integer detected) { llOwnerSay("init start."); ← これがデバッグ用のメッセージ float a; float b; float c; llOwnerSay("init end, for-loop start."); ← これがデバッグ用のメッセージ for (a = 3.0;a = 0.0; a -= 1.0){ b = 10.0 / a; c = b * b; } llOwnerSay("for-loop end."); ← これがデバッグ用のメッセージ } } もしも"init start."と表示された後、"init end, for-loop start."の表示が出る前にエラーが起きれば、エラーの原因は変数定義の部分にあるとわかります。 "init end, for-loop start."も表示され、最後の"for-loop end."が出る前にエラーとなれば、for文の中身に問題があるということになります。 このようにして、まずは問題になっている部分を絞り込んでいきます。 仮に"init end, for-loop start."の後にエラーとなったとしましょう。 怪しいのはfor文の中身ということになりますので、さらに詳細にデバッグメッセージを出力するようにします。 default { touch_start(integer detected) { float a; float b; float c; for (a = 3.0;a = 0.0; a -= 1.0){ llOwnerSay("check a=" + (string)a + ", b=" + (string)b + ", c=" + (string)c); ← 変数の中身をデバッグ出力 b = 10.0 / a; c = b * b; } } } このようにすると、変数a,b,cの中身がどうなっているときにエラーが起きたのかを調べることができます。 出力はたくさん出てきますが、デバッグ時には情報が大事ですので、詳細にスクリプトの動きを調べるべきです。 上記を実行したところ、以下のような結果になったとします。 Object check a=3.0, b=0.0, c=0.0 Object check a=2.0, b=3.3333, c=11.1111 Object check a=1.0, b=5.0, c=25.0 Object check a=0.0, b=10.0, c=100.0 Object Script run-time error ← ここでエラーとなった a=0.0,b=10.0,c=100.0の時にエラーが起きているのがわかります。 では変数の値が上記のような場合の処理をよくよく確かめてみると・・・。 b = 10.0 / a; ↓この計算式は b = 10.0 / 0.0 0で割り算をしているので答えは無限大になってしまう というのがエラーの原因であると突き止められます。 原因がわかれば、あとは対処するだけです。 aが0.0にならないよう、for文の条件を変えるなどすればOKですね。 以上のように、ランタイムエラーは原因を見つけにくいやっかいなエラーですが、落ち着いてじっくり見極めていけば問題個所は必ず見つかります。 では次に、ランタイムエラーにどのようなものがあるのか見ていきましょう。 Math Error 計算エラーです。 なんらかの計算をした結果、コンピュータでは処理不可能な答えになってしまった場合に発生します。 例えば0による割り算です。 答えは無限大になってしまうのでコンピュータでは扱うことができません。 default { state_entry() { float one = 1.0; float zero = 0.0; float quotient = one / zero; ← ここでエラーとなる } } Stack Heap Collision いわゆるメモリ不足です。 スクリプトが使用可能なメモリサイズは16KByteまでという制限がありますが、そのサイズを越える巨大なデータを扱おうとした場合などにこのエラーになります。 よくありがちなのはリスト型変数にどんどん値を追加していき、膨れ上がったリストがメモリを食いつぶしてエラーとなるケースです。 default { state_entry() { list entries = [0]; while (TRUE) { ← 無限にループ entries += entries; ← 要素を延々と追加。やがて制限サイズを越える llOwnerSay((string) llGetListLength(entries)); } } } このエラーを予防するにはllGetFreeMemoryを使います。 llGetFreeMemoryはスクリプトが使える残りメモリサイズをByte単位で返してくれます。 例えば、残メモリサイズが1KByte以下になったら処理を中断するのであれば以下のように判定します。 default { state_entry() { list entries = [0]; while (TRUE) { ← 無限にループ if (llGetFreeMemory() = 1024){ ← 残メモリが1KByte以下 return; ← 処理中断 } entries += entries; ← 要素を延々と追加。 llOwnerSay((string) llGetListLength(entries)); } } } スクリプトが現在使用しているメモリサイズを得るには以下の式を使います。 (16 * 1024) - llGetFreeMemory() 不特定数の要素をリストに追加するようなコードを組む際には、必ず予防策を講じておいたほうが無難です。 Too many listens リッスンが多すぎ!なエラーです。 一つのスクリプトが同時に起動できるllListenは64個が限界です。 それ以上のllListenを使おうとするとこのエラーが出ます。 通常そんなに大量のリッスンを必要とするケースは考えにくいですが、llListenRemoveによるリッスンの閉じ忘れなどによって発生する場合があります。 default { touch_start(integer detected) { llListen(channel, "", llDetectedKey(0), ""); ← タッチした人ごとにリッスンを起動 } listen(integer channel, string name, key id, string message){ llSay(0, name + " said, " + message + " "; } } ※リッスンを閉じるコードがどこにもない Heap Error 「不正なメモリアクセス」が原因で発生するエラーだと思われます。 遭遇したことがないのであまりわかりませんが、ユーザー関数の中からステートチェンジをしたりすると出ることがあるようです。 X error running rule #Y non-Z rule 引数にリスト型変数を指定するような関数(llSetPrimitiveParams, llParticleSystem等)で起こります。 Xにはエラーとなった関数の名前(llSetPrimitiveParams,llParticleSystem等)が表示されます。 Yは引数のリストのうち、Y番目の要素の型が不正であることを意味します。 Zは本来指定すべき型名です。 default { state_entry(){ llSetPrimitiveParams([ PRIM_SIZE, 1, 1, 1, 1 , ← Vector型でなければならないのにRotation型になっている PRIM_COLOR, ALL_SIDES, 1, 0, 0 ,1.0 ]); } } エラーメッセージ: llSetPrimitiveParams error running rule #1 non-vector rule. 上記の例では、PRIM_SIZEを指定するパラメータとして、Vector型でなければいけないところを間違ってRotation型にしてしまっています。 X error running rule #Y unknown rule 上のエラーと似ていますが、こちらは型の間違いではなく要素の順番を間違ったり、余計な要素が混ざっていると出ることがあります。 Xにはエラーとなった関数の名前(llSetPrimitiveParams,llParticleSystem等)が表示されます。 Yは引数のリストのうち、Y番目の要素が不正であることを意味します。 default { state_entry(){ llSetPrimitiveParams([ PRIM_SIZE, 1, 1, 1 , 0, 0, 1 , ← 余分なVector型がある PRIM_COLOR, ALL_SIDES, 1, 0, 0 ,1.0 ]); } } エラーメッセージ: llSetPrimitiveParams error running rule #2 unknown rule PRIM_SIZEを指定するパラメータとして、Vector型を一つ指定するべきところを、消し忘れたのか、2つ書いてあるためにエラーになります。 ビルドエラー 厳密に言えばLSLに関わるエラーではありませんが、製作中に遭遇するエラーとして挙げておきます。 The object may be out of range or may have been deleted. スクリプト編集を行っているにも関わらず、そのスクリプトが入っているオブジェクトをワールド上から削除してしまったりした場合に起こります。 編集したスクリプトを保存しようとすると、 「オブジェクトがないので保存できないよ!」 というエラーになります。 タイマーでllDieするオブジェクトや、temprezオブジェクトを扱っているときにしばしば遭遇します。 この場合、インベントリの中に新たにスクリプトを作成し、編集したスクリプトコードを丸々コピー&ペーストして保存するか、オブジェクトをrezし、改めてスクリプト編集ウインドウを開いて、そこにペーストして保存する必要があります。 保存しないでスクリプト編集ウインドウを閉じた場合、編集結果は失われますので注意しましょう。 また、オブジェクトが存在するにも関わらずこのエラーが出る場合、アバターがオブジェクトから離れすぎていることが考えられます。 オブジェクトの近くまで移動するか、あるいはオブジェクトのほうをアバターの近くに移動させてから保存して下さい。 移動するオブジェクトの作成中に、思わぬ遠方にオブジェクトがすっ飛んでいってしまったときなどによく起こるエラーです。 Can t enable physics for objects that interpenetrate others オブジェクトの編集中、物理属性を付与しようとしたときに、すでに他のオブジェクトや地面とぶつかっているとこのエラーが起きます。 何もない空間にオブジェクトを移動させた上で物理属性を付与すればOKです。 Pieces too far apart オブジェクトをリンクさせようとしたとき、オブジェクト同士の距離が離れすぎていると起こります。 オブジェクト同士を近づけてリンクしましょう。 リンク後、個別にprimの位置を動かすことで、prim間の距離をあけることが出来ます。 またはリンクしようとしているprimを巨大化させるのも解決方法の一つです。 大きな状態でリンクし、その後個別にprimのサイズを元の大きさに戻します。 名前 コメント
https://w.atwiki.jp/mainnkurahuto-memo/pages/23.html
エラー対策(Switch) 通信エラー 通信速度が遅いとまともに読み込めない場合があり、通信エラーが発生する場合があります。 時間帯によって速度制限がかかる場合があるので、Switchのインターネットの「接続テスト」をしてみて接続状況を確認してみましょう。 通信エラーが発生するときと発生しないときの通信速度を覚えておくと良いかもしれません。 1Mbpsを下回って100kbpsとかになっていると、かなり通信速度は遅いです。 通信速度(ダウンロード)が30Mbps以上あれば十分という情報がありました。 10Mbpsでも通信エラーはおきにくいという情報もあるので目安までに。 <接続テスト> 1.Switchのホーム画面の「設定」を押す。 2.「インターネット」を押す。 3.「接続テスト」を押す。 4.「通信速度(ダウンロード)」と「通信速度(アップロード)」を確認する。 あとサインインは起動後しばらく時間がかかるので、読み込みがすべて終わるまで待ってから操作しはじめるのが良いかもしれません。 マーケットプレイスのダウンロードが容量が足りなくてできない マインクラフトのセーブデータが多すぎて発生するようです。 不要なデータを削除する必要があります。 まずは使っていない「不要なワールド」を削除してみましょう。 それでもダメな場合は、「マーケットプレイスでダウンロードしたもの」を削除してみましょう。 <ダウンロードデータの削除> 1.マインクラフトを起動してホーム画面の「設定」を押す。 2.「ストレージ」を押す。 3.「世界テンプレート」を押す。 4.削除しても良い「データ」を押す。 5.「ゴミ箱」を押す。 6.「削除する」を押す。 マーケットプレイスが使えない Microsoftアカウントに上手くサインインできない マインクラフトのデータに何らかの異常が発生しているため、エラーが発生する場合があるようです。 セーブ・ダウンロード・更新などが上手く完了していないためかもしれません? データ関連のエラーはソフトの「再ダウンロード」で大概治ります。 セーブデータを削除しなければ、今まで作ったワールドやダウンロードしたものは消えないのでとりあえず「再ダウンロード」をやってみると良いかと思います。 <再ダウンロード> 1.Switchのホーム画面の「設定」を押す。 2.「データ管理」を押す。 3.「ソフトの詳細管理」を押す。 4.「Minecraft」を押す。 5.「データの破損チェック」を押す。 6.結果はおそらく「壊れたデータは見つかりませんでした」と表示される。 7.「再ダウンロードする」を押す。 Switchのホーム画面で「Minecraft」をはじめるとダウンロードが開始されると思います。
https://w.atwiki.jp/a_kurosawa/pages/23.html
◆エラー履歴 ※今までハマったエラーを記入 ◆エラー履歴forwardでNoSuchMethodError FireFoxでjQueryのclone使うと、hiddenの値が返ってこない chromeでのみ、Ajaxで中身を書き換えたhiddenの値が復元されない DOCTYPEでcssのhoverとposition absoluteの動作が変わる StrutsでActionMessageを表示しようとしてハマった、、 文字列をDate型に変換するのにハマった、、 MySQLのエンコードがおかしい jquery→Action(Seasar)で配列を送りたい jqueryでプラグインの関数は、呼んだ分だけ設定される value=""(デフォルト)を書いて、前の画面のデータが表示されない SQL文でorder byを途中に書いてエラー プロジェクトをコピーして、実行してもページがないというエラーになる SingletonS2Container最強 validate関数を作って、呼び出す時アノテーションが先に呼び出される 検索機能を作った時、何度もできましたって言ったものの javascriptでエラーの見方が分からずに、ハマった。 forwardでNoSuchMethodError jdkのバージョンの問題。 コンパイラとサーバのJDKのバージョンが違うと発生するらしい。 今回はservlet-api.jarのバージョンが違うのが問題だった。 FireFoxでjQueryのclone使うと、hiddenの値が返ってこない FirefoxでSeasar2でSAStrutsでWebページを作ってます。 セレクトボックスをjQueryのcloneで複製して、 次の画面に遷移し、ブラウザのバックボタンで戻ってくると hiddenの値が初期化される現象が発生しています。 formはjavascriptでsubmitを呼んでいます。 testページ作っても再現しないので、何か他の原因があるのかもー;; とりあえず、clone使わなければちゃんとした値が返ってくるので そっちでやる方向で。 一応こんな例もあるらしい。 Firefoxでclone使ったがバグった chromeでのみ、Ajaxで中身を書き換えたhiddenの値が復元されない Seasar2でSAStrutsの環境で、 FormにInstanceTypeを何も指定せずに hiddenの値を書き換え、javascriptで document.forms[0].action = "methodName"; document.forms[0].submit(); とやると発生する稀少なバグ。 chromeで戻る画面のURLが変わると別の画面に遷移するような 動作をするという仕様(?)らしい。 A画面では最初「go」というactionが定義されている。 それをJavascriptで「next」というaction名に書き換え、 submitして、B画面に遷移する。 そこでブラウザの戻るボタンを押下。 ブラウザではA画面のフォームのaction「next」と想定して 画面遷移するが、実際はaction「go」しかないので 別画面と勘違いし、復元せずに別画面に遷移したような動作になる。 …らしい。。 form 内にaction名(Actionクラスのメソッド名)を nameとvalueに書いたhiddenを用意して、 submitするとそこに遷移するらしいので、 それをやると正常に動作した。 form input type="hidden" name="next" value="next" id="actionName" / input type="button" value="次の画面へ" / /form script function submit() { // ここでこういう風にaction名を書き換えられる document.getElementById("actionName").name = "next"; document.getElementById("actionName").value = "next"; document.forms[0].submit(); } /script DOCTYPEでcssのhoverとposition absoluteの動作が変わる IE7での動作を比較しました。 html タグの前に ◆互換モード !DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" を指定した時は、座標指定は自由に設定できるが、 hover(マウスオーバーした時のデザインを変更するcss)がうまくいかない。 通常時のcssは反映されているが、 マウスカーソルを合わせてもデザインが変わらない。 ◆標準モード !DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http //www.w3.org/TR/html4/loose.dtd" を指定した時は hoverは正常に動作するが、position absolute がうまくいかない。 relativeも使ってるけど、はずしてもおかしな座標に表示される。 恐らくhoverはIE7からaタグ以外で使えるようになったりなど、 関係しているかもしれないが…定かではない。 参考 StrutsでActionMessageを表示しようとしてハマった、、 struts-config.xmlでpropertiesファイルを読み込んでるのに、 new ActionMessage("エラーメッセージ") と書いて表示されず、ハマった… propertiesがあるなら、そっちにコードと内容を書いて それを使わないと、propertiesファイル内から エラーメッセージ=エラーメッセージ内容 が書いてあるところを探して見つからず、表示されない。 正しくは、 Action or Form 内 new ActionMessage("error.message"); // saveErrorとかに渡してね propertiesファイル (WEB-INF/classesの中とかにある筈、なければ作るとか) error.message=エラーメッセージ内容 という感じで使う。 ActionMessageを発行すれば、servletが呼ばれ続ける限り 次の次の次の画面でもActionMessageを取得できる。 文字列をDate型に変換するのにハマった、、 まず、 Date date = DateFormat.getDateInstance().parse(str); を間違えて Date date = DateFormat.getInstance().parse(str); って書いてて動かない~ってハマってたのと、 Thu, 06 Dec 2012 16 41 19 +0900 ↑こんな型の文字列をDate型にしようとして ParseExceptionが出てた。 SimpleDateFormat objFormat = new SimpleDateFormat(format, locale); Date date = objFormat.parse(str); フォーマットを指定して変換するのと、 ↑の日付の場合、 format = "EEE, dd MMM yyyy HH mm ss Z" locale = Locale.ENGLISH で指定しないと駄目っぽい。 あとjava.sql.Dateに変換するなら、こう。 new java.sql.Date(toDate(str, format, locale).getTime()); ちなみに+0900ってのはタイムゾーン。 ±0000とか±000の形なら Z でフォーマット指定すればいけるけど、 +09 00はできなかった…(コロンが駄目っぽい) 誰かやり方があるなら教えろください。。 名前 コメント MySQLのエンコードがおかしい MySQL接続のURLに useUnicode=true characterEncoding=utf8 をつけてなかったので、 ソースがUTF-8でサーバもUTF-8なのに バグバグだった。 jquery→Action(Seasar)で配列を送りたい javascript側は連想配列で送ろうとして、 Action(というかForm)では普通の配列で受け取ろうとして、 (panelList[])の設定に失敗しました。 理由はjava.lang.NumberFormatException For input string "" と出ました。 でもweb.xmlを直接書くServletでは動くみたい。謎。 参考 追記 var list = {}; ajax(url "method", data { "fieldName", list }) で一応送れた。 list = {};でオブジェクトとして定義してやるのがミソらしい。 でもごちゃごちゃ書いてあるソースに移動したら途端に動かない、、(泣 あと、int[]では駄目で、String[]限定らしい。 この一連のExceptionはSeasarのバグらしい。 jqueryでプラグインの関数は、呼んだ分だけ設定される diceプラグインで $("#dice").dice(); を複数回呼ぶと、クリックした時に ↑を呼んだ回数分中の処理が実行されて おかしなことになる。 clickとか複数回呼ばなくちゃいけない場合は、 ("#dice").unbind( click ); unbindを呼んでから再度呼ぶ。 value=""(デフォルト)を書いて、前の画面のデータが表示されない Servlet側とjspを自分で作る場合、初期値にvalue=""などを設定するのは必要だが、 Strutsでvalue=""をやってしまうと、初期値がテキストボックスに入力されない。 ちなみに前の画面で入力したデータをForm名と同じ名前でPOSTされる。 SQL文でorder byを途中に書いてエラー order byは必ず最後に書かなければいけない。 SeasarのSQL文を作るフレームワークでも同じ。 ついでにlimit関数はOracleでも普通に使えます プロジェクトをコピーして、実行してもページがないというエラーになる eclipseでプロジェクトをコピーすると いろいろなリンクがコピー前のプロジェクトになっていることがあります。 サーバを起動した時にアップロードしてるファイルパスを調べたり、 プロジェクトプロパティを開いて、パスを確認したりしましょう。 SingletonS2Container最強 Seasarでカスタムバリデートを作った時、 validate関数側でデータベース接続しようと思ってもできずに困ってました。 本来はデータベース接続して、validateを行いたい場合はFormに書いたりして、 validateでは文字列の中身をチェックしたりする為にあるらしいが。 でも、SingletonS2ContainerでConnectionクラスなどを直接呼び出して、 データベース接続することはできるようだ。 このやり方は結構使うべきでないところでも使えてしまうので、最終手段として残しておく。 本当に実装したいのに無理な時に使おう。 validate関数を作って、呼び出す時アノテーションが先に呼び出される 変数にアノテーションで@Requiredなどを書き、 関数に@Execute(validate="methodName", input="hoge.jsp")と書くと、 まずアノテーションチェックが通り、その後関数に登録したvalidate関数が呼ばれる。 ※@Execute(validator=true)と@Execute(validate="method")は語尾が違うので注意 その為、A,B,Cをチェックしたい場合とCのみチェックしたい場合は アノテーションでCのみ(毎回チェックするもののみ)チェックして、 自分で作った関数でAとBをチェックすれば実装できる。 エラーメッセージなどはエラーが発生する場合しか表示せず、 アノテーションで引っかかってると、元の画面に戻ってるのに エラーメッセージが表示されないし、ログにも何も表示されないので わかりにくいので注意。 検索機能を作った時、何度もできましたって言ったものの こっち直したらこっちが壊れた…などで何回も呼んでしまった。 エラーチェックはちゃんとやろう。 入力チェックは、 正常な値が入力された場合 何も入力してない場合 入力はされているが意図しない値が入力された場合(2byte文字や数字や記号など) javascriptでエラーの見方が分からずに、ハマった。 FireFoxでツール→ウェブ開発ツール→エラーコンソールで エラーを見ることができる。 関数の文字列もあってるし、include先の関数もちゃんとあるのに、エラーが出る場合は type="text/javascript"などの決まり文句などもチェックしよう。
https://w.atwiki.jp/dendlightning/pages/25.html
DirectXに関係するエラー このゲームはDirectX9cを利用しています。 DirectXが古いと「d3dx9_37.dllが見つからなかったため、このアプリケーションを開始できません」というエラーが出てきます。その場合DirectXエンドユーザーランタイムを導入することにより解決できます。 ダウンロードが面倒だったりオフラインの方は、他の同人ゲームや商業ゲームにもインストーラーが入っている場合があるのでそれを使ってインストールしてください。(2010年以降のものでないと動かない可能性があります。)このゲームにはDirectXのインストーラーが付属していません。 参考として管理人がゲームに含まれているDirectXをインストールして正常に電Dが動作したゲームは上海アリス幻樂団 東方三月精~妖精大戦争 のみ それ以前のは古くて動きませんでした。(2010年7月以降にでたDirectX なら動く) Windows7でも入れないと動作しません。 セーブデータの消し方ならびにパッド設定、曲設定の初期化の仕方 何らかの不具合により変更内容がセーブされない、勝手に変更されてしまうなどの症状が出たときの対処法LS,BS,CSともに共通でSystem.datがセーブデータPad.datがパッドならびにキー操作設定データMusicList.dat(Verによって若干違う)が曲設定のデータです。これらを消すことによって購入時の状態に戻すことができます エラー情報 プレイしていると「問題が発生したためプログラムを終了します。」という内容のエラーが出てくる。ここではその対象法を紹介する。RSでパッチを当ててもasakusa_bridge.binのエラーが出る人はRSフォルダの中の電車でD RisingStage Ver108.exeでゲームを起動させてください。パッチが正確に適用されていないことによる不具合です。パッチを当てても最新のexeファイルで起動させないと無意味になります Windows7、Vistaをお使いの場合。 UAC機能という標準機能が働いている可能性が高いです。いったんアンインストールして、再インストールのときに、インストール場所をマイドキュメントなどUACが効かないところに指定してください。 WindowsXP Vista 7 に共通するエラー たまに出てくるらしいです。もう一回起動し直してください。 それでも解決しない場合。 再インストールを試してみるか、それでも不具合が出て起動すらできない場合CD破損の確率が高いです。買ったばかりの新品にこのようなことが起きた場合、地主一派さんにメールで相談するか、買ったお店に交換依頼をしてください。(一部の店ではできません。) パッチをあてるとエラーを回避できる可能性があります。 台詞の切り替えが速すぎる(声が流れている間に別の声が出てしまう。)おそらく垂直同期が切れています。設定で変更しましょう 音が出ないまず最初にスピーカー(ヘッドフォン)がきちんとつながれているか確認。それでも出ない場合サウンドが最小になってないか、サウンドサービスは起動しているか、サウンドカード(入れている場合)のドライバが入っているか、きちんと刺さっているかを確認 なおLightningStageはCDから起動することができません。(BurningStageは一応できるがセーブやパッチを当てられない。(セーブはできないがパッチはHDDであてた後もう一回焼けば可能。ただし読み込みは遅くなる。) 遅いと思ったら まず動作環境のページに書かれていることをすべて試してみる
https://w.atwiki.jp/hakugeki/pages/84.html
私が突如、エラーメッセージが出て、ゲーム上に入れなくなった時の GMからの返信、対応を紹介します。 エラーメッセージはよく覚えていないのですが>< 英語で”トランスピーのファイルは壊れています。エラーファイルを ゲームヤローGMに送ってください”でした^^ 返信内容は お問い合わせありがとうございます。 一度以下の手順によるクライアントファイルの再インストールを お試しいただきますようお願いいたします。 1、コントロールパネルのプログラムの追加と削除よりトランスピーのアンインストール 2、インターネットオプションよりインターネット一時ファイルの削除 3、パソコンの再起動 4、ご利用のセキュリティソフトおよびファイアーウォールの一時停止 5、トランスピー公式サイトよりクライアントファイルを新たにダウンロード 6、5で保存したファイルを実行してインストールの後、ゲームを起動 思い当たることがありました。調べ物が多くて、その時期に異常なほど HP回覧していました。そのことによってなぜかTPはエラー起こしていたように 思います。(サブPCから接続は出来ていました^^) 1~6の対応を行う前に マイコンピュータ → ローカルディスク(c ) (←※人によって違います><)→ Program Files → RedBanana → Transpee → singlemode、 log、screenshotの3つのフォルダーを デスクトップに移動して今までのデーターが無くならないようにしました。 1~6の対応で無事、エラーを起こさなくなりました^^ ついでに閲覧履歴→設定→ページを履歴で保持する日を 10日に変更しておきました。 復旧後にはsinglemode、 log、screenshotフォルダーは元の場所に戻しました。 ほんの1例だとは思いますが、試してみてはいかがですか^^ こんなエラーを起こして、こんな対応したよ~みたいなのがありましたら教えてください^^ 名前 コメント
https://w.atwiki.jp/astro_dust/pages/25.html
エラーあれこれ Bad fd number sh, bash, zch, tschなどで微妙に異なるリダイレクトに関係して発生。 http //wizard-blue.hatenablog.jp/entry/20090919/1253337594
https://w.atwiki.jp/hutu_bbs/pages/24.html
もしかしたら役に立つかもです。 ERROR [00]「タダノコウジチュウデスm(_ _)m」 ただの工事中です。 ERROR [01]「看板が作れない程の致命的なエラーが発生しますた(,,゚Д゚)」 看板が作れない・遅れた際の言い訳エラーです。対策は数日待つことです。 ERROR [02]「嵐が出たので閲覧専用モードになるました(´·ω·`)」 嵐が出た際のエラーで、閲覧専用モードになります。対策は数日待つこと。(運営陣になることもありますが出来る確率はかなり低い) ERROR [03]「マヂでヤバいのですまぬが黙ってくれ」 滅多に出ません。対策はなし
https://w.atwiki.jp/wiki15_dol/pages/545.html
回線エラー インターネットを利用する以上、回線エラーは必ず一定の確率で付きまとう。 通常のWebブラウジングの際にも「ボタンを押したのに画面が表示されない」という事はよくあるが、文字や静止画情報を読み込むだけなら「更新」や 「戻る」ボタンを押して読み込むをやり直すだけで良い。 DoLの通信対戦は、全ての対戦者のパソコンが連絡を取り合わなければ 成立しないため、通信エラーから回復するには、全員が一度退室?して 鯖を立て直す所から、やり直す必要がある。 なお、こういった通信対戦中の不具合の大半はインターネット自体の 「回線エラー」によって引き起こされている。 DoLのソースコードにバグ?が有る訳ではない。 一律にバグ?と呼ぶのは作者に対するマナー違反に当たる。悪意なく 混同しているプレーヤーも多いが、これは改めるべきである。 尚、DoL自体のバグが原因で、対戦がストップする場合再現性が 見出せるはずなので、この場合は本家通常BBSへの報告対象。
https://w.atwiki.jp/bloodlinechampions/pages/69.html
エラー対応方法 1/18現在、BLCのローダーを起動すると以下のようなエラーをはきます。 この状態から正しく起動するには 「Ignore this erroe and attempt to continue」にチェックを入れ 「Send Error Report」(エラーを報告する)か「Dont Send」(報告しない)を選択すれば、正しく処理が進みます。 尚、なんども表示されるのでその度に同じ手法を行って下さい。
https://w.atwiki.jp/dslua/pages/67.html
ファイル読込みエラーのサンプルです。 ファイルが作成されていないときに「B Button」を押すとエラー処理されます。再度試すときは「FileTest.txt」を削除してください。 -- FileReadWrite FileReadERR.lua -- ファイル名:FileTest.txt while not Keys.newPress.Start do Controls.read () startDrawing() screen.print(SCREEN_UP, 8 * 4, 0, "*** File Read Write TEST ***") screen.print(SCREEN_UP, 8 * 8 ,60, "X Button File Sava") -- Fileを書き込みます screen.print(SCREEN_UP, 8 * 8 ,80, "B Button File Load") -- Fileを読み込みます -- File load if Keys.newPress.B or Keys.held.B then screen.print(SCREEN_UP, 8 * 8 ,80, "B Button File Load",Color.new(15,0,0 )) f = io.open("FileReadERR.txt","r") if f then -- ファイルが正常に読み込めた場合 i = 0 for line in f lines() do i = i + 1 screen.print(SCREEN_DOWN, 0, 8 * i , line) end io.close(f) else -- ファイルが正常に読み込めなかった場合 screen.print(SCREEN_DOWN, 0, 8 * 1, "File not Found") end end -- File save X if Keys.newPress.X or Keys.held.X then screen.print(SCREEN_UP, 8 * 8 ,60, "X Button File Sava",Color.new(16,0,0 )) f = io.open("FileReadERR.txt","w") f write("File Test\n") io.close(f) screen.print(SCREEN_DOWN, 0 , 0, "FILE SAVE.") end stopDrawing() end 実行結果 画面イメージ Bボタンでファイルリード(ない場合) Aボタンでファイル書き込み Bボタンでファイル読込 " " " " " " このサンプルには、ファイル読込み・ファイル書込みのコードも含まれています。 -- FileReadWrite FileRW.lua -- ファイル名:FileTest.txt while not Keys.newPress.Start do Controls.read () startDrawing() screen.print(SCREEN_UP, 8 * 4, 0, "*** File Read Write TEST ***") screen.print(SCREEN_UP, 8 * 14 ,60, "X") -- File save X screen.print(SCREEN_UP, 8 * 12 ,80, "Y") -- File save Y screen.print(SCREEN_UP, 8 * 16 ,80, "A") -- File save A screen.print(SCREEN_UP, 8 * 14 ,100, "B") -- File load screen.print(SCREEN_UP, 8 * 8 ,140, "Start Click Exit") -- File load if Keys.newPress.B or Keys.held.B then screen.print(SCREEN_UP, 8 * 14 ,100, "B",Color.new(15,0,0 )) f = io.open("FileTest.txt","r") if f then -- ファイルが正常に読み込めた場合 i = 0 for line in f lines() do i = i + 1 screen.print(SCREEN_DOWN, 0, 8 * i , line) end io.close(f) else -- ファイルが正常に読み込めなかった場合 screen.print(SCREEN_DOWN, 0, 8 * 1, "File not Found") end end -- File save X if Keys.newPress.X or Keys.held.X then screen.print(SCREEN_UP, 8 * 14 ,60, "X",Color.new(16,0,0 )) f = io.open("FileTest.txt","w") f write("File Write Test X\n") f write("Key X Button\n") io.close(f) screen.print(SCREEN_DOWN, 0 , 0, "X FileTest.txt SAVE.") end -- File save Y if Keys.newPress.Y or Keys.held.Y then screen.print(SCREEN_UP, 8 * 12 ,80, "Y",Color.new(16,0,0 )) f = io.open("FileTest.txt","w") f write("File Write Test Y\n") f write("Key Y Button\n") io.close(f) screen.print(SCREEN_DOWN, 0 , 0, "Y FileTest.txt SAVE.") end -- File save A if Keys.newPress.A or Keys.held.A then screen.print(SCREEN_UP, 8 * 16 ,80, "A",Color.new(16,0,0 )) f = io.open("FileTest.txt","w") f write("File Write Test A\n") f write("Key A Button\n") io.close(f) screen.print(SCREEN_DOWN, 0 , 0, "A FileTest.txt SAVE.") end stopDrawing() end 実行結果 画面イメージ Bボタンでファイルリード(ない場合) Aボタンでファイル書き込み Bボタンでファイル読込 " " " " " "